查看原文
其他

使用seurat3里面计算线粒体基因含量的2个方法

生信技能树 单细胞天地 2022-06-07


首先构建10x对象,这里就不赘述了,我在我在单细胞天地的2个教程:

展示的非常清楚啦,因为每个教程想说明的情况不一样,所以需要重新把计算线粒体基因含量讲解一下。
为了维持教程的统一性,我这里一直使用 sce 来代表构建好的seurat对象。

第一种方法

因为计算某些基因含量这个需求实在是太常见了,所以特意设置了一个函数:PercentageFeatureSet

  sce <- CreateSeuratObject(Read10X('../scRNA/filtered_feature_bc_matrix/'), "sce")
  head(sce@meta.data)  
  GetAssayData(sce,'counts')
  sce[["percent.mt"]] <- PercentageFeatureSet(sce, pattern = "^MT-")
  VlnPlot(sce, features = c("nFeature_RNA""nCount_RNA""percent.mt"), ncol = 3)

这样就可以可视化我们计算好的线粒体基因含量,下图可以看出需要最起码的过滤。

一般来说,这个过滤起码得是线粒体基因含量占比25%以下的细胞才保留,当然也得考虑到生物学课题啦。

第二种方法

上面的方法是修改 sce[["percent.mt"]]  ,下面我们演示 AddMetaData 函数,同样是可以增加线粒体基因含量信息到我们的seurat对象。

mt.genes <- rownames(sce)[grep("^MT-",rownames(sce))]
C<-GetAssayData(object = sce, slot = "counts")
percent.mito <- Matrix::colSums(C[mt.genes,])/Matrix::colSums(C)*100
sce <- AddMetaData(sce, percent.mito, col.name = "percent.mito")
sce[["percent.mito"]]

也可以是添加核糖体基因含量

rb.genes <- rownames(sce)[grep("^RP[SL]",rownames(sce))]
percent.ribo <- Matrix::colSums(C[rb.genes,])/Matrix::colSums(C)*100
sce <- AddMetaData(sce, percent.ribo, col.name = "percent.ribo")

如下所示,可以看到部分细胞的核糖体基因含量也过高,至于过滤的指标,大家需要看文章啦!


也可以是免疫球蛋白相关基因含量等等,取决于大家的生物学课题啦。

如果你不知道为什么要计算线粒体基因含量,可以看

目录


如果你的表达矩阵里面线粒体基因名字并不是以MT开头肿么办?

基因ID可以转换,稀有物种的数据可能是需要查询专业数据库,找到线粒体基因的名字列表。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存